package com.itzixi.pojo;


import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import org.apache.ibatis.type.JdbcType;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 管理后台的用户 DO
 *
 */
@TableName(value = "system_users", autoResultMap = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AdminUserDO  {

    /**
     * 用户ID
     */
    @TableId
    private String id;
    /**
     * 用户账号
     */
    private String username;
    /**
     * 加密后的密码
     *

     */
    private String password;
    /**
     * 用户昵称
     */
    private String nickname;
    /**
     * 备注
     */
    private String remark;

    /**
     * 用户邮箱
     */
    private String email;
    /**
     * 手机号码
     */
    private String mobile;
    /**
     * 用户性别
     */
    private Integer sex;
    /**
     * 用户头像
     */
    private String fileId;

    @TableField(exist = false)
    private List<String> fileIds;

    /**
     * 权限角色名
     */
    @TableField(exist = false)
    private List<String> roleNames;


    /**
     * 帐号状态
     *
     */
    private Integer status;
    /**
     * 最后登录IP
     */
    private String loginIp;
    /**
     * 最后登录时间
     */
    private LocalDateTime loginDate;

    /**
     * 工号
     */
    private String workNumber;

    /**
     * 工龄
     */
    private String lengthOfService;
    /**
     * 多租户编号
     */
    private String tenantId;
    /**
     * 年龄
     */
    private String age;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)

    private LocalDateTime createTime;
    /**
     * 最后更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * 创建者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    @TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR)
    private String creator;
    /**
     * 更新者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    @TableField(fill = FieldFill.INSERT_UPDATE, jdbcType = JdbcType.VARCHAR)
    private String updater;
    /**
     * 是否删除
     */
    @TableLogic
    private Boolean deleted;

    /**
     * 职务
     */
    private String jobTitle;


    /**
     * 政治面貌
     */
    private String politicalAffiliation;

    /**
     * 库房权限(0:启用  /  1:禁用)
     */
    private String warehouseAuthority;
    /**
     * 人闸权限
     */
    private String authority;

    /**
     * 所务权限
     */
    private String taskAuthority;

    @TableField(exist = false)
    private String url;

    /**
     * 营销工号
     */
    private String workNumberMarketing;


    //0：未删除 1：删除
    @TableField(exist = false)
    private Integer isDelete;

    @TableField(exist = false)
    private Boolean isTenant;
}
